package top.yujinghe.study.webdemo.dao;

import top.yujinghe.study.webdemo.entity.TbClass;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class TbClassdao {
    //jdbc:java数据库链接
    //dao:数据访问对象
    //entity:实体类,一般就是描述数据的类
    //java.sql.Connection:数据库连接


    public static int insert(TbClass tbClass) throws SQLException {
        //链接数据库
        Connection conn = DBHelper.getConnection();
        //预备添加的语句 ？问号表示一个参数
        String sql = "insert into tb_class (classname, classinfo) values (?, ?)";
        //java的预处理sql语句
        PreparedStatement ps = conn.prepareStatement(sql);
        //设置？参数对应的值
        ps.setString(1, tbClass.getClassName());
        ps.setString(2, tbClass.getClassinfo());
        //执行语句并获取语句影响的行数
        int i = ps.executeUpdate();
        return i;


    }


    public static List<TbClass> query() throws SQLException {
        List<TbClass> list = new ArrayList<>();
        //数据库的链接
        Connection conn = DBHelper.getConnection();

        //查询语句
        String sql = "select * from tb_class";
        //预处理sql语句
        PreparedStatement ps = conn.prepareStatement(sql);
        //执行查询并返回结果集
        ResultSet rs = ps.executeQuery();
        //查询结果集的next是读取下一行数据，如果读取到就返回真，否则就是假
        while (rs.next()) {
            //将数据库的记录转换成Java对象
            TbClass tbClass = new TbClass();
            //rs.get数据类型（“数据表中字段名称”）就是获取查询结果中指定字段的数据
            tbClass.setId(rs.getInt("id"));
            tbClass.setclassname(rs.getString("classname"));
            tbClass.setClassinfo(rs.getString("classinfo"));
            //java的Date类型对应的是数据库api的Timestamp类型
            tbClass.setCreated(rs.getTimestamp("created"));
            //添加到集合
            list.add(tbClass);


        }

        conn.close();
        return list;
    }
}
